﻿#ifndef CARDS_H
#define CARDS_H

#include "card.h"
#include <QSet>
class Cards
{
public:
    enum SortType{Asc,Desc,noSort};
    Cards();
    Cards(const Card& card);
    //添加扑克牌
    void add(const Card &card);
    void add(const Cards& cards);
    void add(const QVector<Cards>& cards);
    //删除扑克牌
    void remove(const Card &card);
    void remove(const Cards& cards);
    void remove(QVector<Cards> cards);

    Cards& operator <<(const Card& card);
    Cards& operator <<(const Cards& cards);

    //扑克牌的数量
    int cardcount();
    //是否为空
    bool isEmpty();
    //清空扑克牌
    void clear();

    //最大点数
    Card::CardPoint maxPoint();
    //最小点数
    Card::CardPoint minPoint();
    //指定点数的牌的数量
    int pointCount(Card::CardPoint point);
    //某张牌是否在集合内
    bool contains(Card& card);
    bool contains(Cards& cards);

    //发牌
    Card takeRandCard();

    //对扑克牌进行排序
    QVector<Card> toCardList(SortType type=Desc);
private:
    QSet<Card> m_cards;
};

#endif // CARDS_H
